package pers.xiaojun.boot.web.core.util;

import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.http.HttpHeaders;
import pers.xiaojun.boot.web.core.constants.TokenTypeConstants;

/**
 * Web 工具
 *
 * @author xiaojun
 * @since 2025-11-21
 */
public class WebUtils {

    /**
     * 获取请求头中指定值并转为 Long 类型
     *
     * @param request 请求信息
     * @param headerName 请求头字段名
     * @return 请求头对应的 Long 值，如果无法转换为数字则返回 null
     */
    public static Long getHeaderAsLong(HttpServletRequest request, String headerName) {
        String header = request.getHeader(headerName);
        return NumberUtil.isNumber(header) ? Long.valueOf(header) : null;
    }

    /**
     * 获取请求头中 Authorization 中的 Basic凭证
     *
     * @return Basic凭证
     */
    public static String getAuthorization(HttpServletRequest request) {
        String authorization = request.getHeader(HttpHeaders.AUTHORIZATION);
        if (StrUtil.isEmpty(authorization)) {
            return null;
        }
        return StrUtil.subAfter(authorization, TokenTypeConstants.BASIC_PREFIX, true);
    }

}
